/*
 * ColumnCellRendererPropertiesDisponibleColumnValues.java
 * Copyright 2010 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * 
 * Creado el 18/04/2010, 11:22:10 PM
 */

package com.ufps.cuatro.util.render;

import java.awt.Component;
import java.io.Serializable;

import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;

import com.ufps.cuatro.modelo.representacion.ParametroPropiedad;
import com.ufps.cuatro.modelo.representacion.Propiedad;
import com.ufps.cuatro.modelo.representacion.componente.Componente;

/**
 * <i><b>ColumnCellRendererPropertiesDisponibleColumnValues:</b></i> <p>Esta Clase se
 * encarga de las vistas en la administración de las configuraciones de la Propiedades
 * Disponibles para el Componente Generado.</p>
 * <p>Esta Clase se apoya de otras clases renderer para dar soporte de acuerdo al tipo
 * de dato de la propiedad seleccionada.</p>
 * 
 * @author Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 18/04/2010
 * 
 * @see TableCellRenderer
 * @see Serializable
 * @see JComponent
 */
public class ColumnCellRendererPropertiesDisponibleColumnValues extends JComponent implements TableCellRenderer, Serializable {
    private static final long serialVersionUID = -2735604478900137909L;
    
    private Componente objComponente;
    
    /**
     * Constructor por defecto
     * @param objComponente Referecnia al Componente que contiene la Representación.
     */
    public ColumnCellRendererPropertiesDisponibleColumnValues(Componente objComponente) {            
        this.objComponente = objComponente;
    }    

    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {        
        if(value instanceof Propiedad){
            Propiedad objPropiedad = (Propiedad) value;            
            if(objPropiedad.getObjParametrosSet().size() == 1){
                ParametroPropiedad objParametro = objPropiedad.getObjParametroDefault(Propiedad.MODO_SET);
                if(objParametro.getStrRender().equals("JCheckBox")){
                    if(!objParametro.getStrValue().isEmpty()){
                        if(objParametro.getStrValue().equals("true") || objParametro.getStrValue().equals("false")){
                            JCheckBox objChk = new JCheckBox("", Boolean.valueOf(objParametro.getStrValue()));
                            objChk.setToolTipText(objPropiedad.getTooltips());
                            return objChk;
                        }
                        else{
                            JCheckBox objChk = new JCheckBox("", false);
                            objChk.setToolTipText(objPropiedad.getTooltips());
                            return objChk;
                        }
                    }
                    else{
                        JCheckBox objChk = new JCheckBox("", false);
                        objChk.setToolTipText(objPropiedad.getTooltips());
                        return objChk;
                    }
                }
                else if(objParametro.getStrRender().equals("JColorChooser")){
                    if(!objParametro.getStrValue().isEmpty()){                    
                        return new ColorRendererTable(objParametro.getStrValue());
                    }
                    else{
                        return new ColorRendererTable(0);
                    }
                }
                else if(objParametro.getStrRender().equals("JFileChooser")){
                    if(!objParametro.getStrValue().isEmpty()){
                        return new PathRendererTable(objParametro.getStrValue());
                    }
                    else{
                        return new PathRendererTable();
                    }
                }                
                JLabel objLbl = new JLabel(objParametro.getStrValue());
                objLbl.setToolTipText(objPropiedad.getTooltips());                
                return objLbl;
            }
            else{
                JLabel objLbl = new JLabel();
                objLbl.setToolTipText("Propiedad sin Asignar");
                return objLbl;
            }
        }
        
        JLabel objLbl = new JLabel();
        objLbl.setToolTipText("Propiedad sin Asignar");
        return objLbl;
    }
}
